Spring JDBC-তে SQL স্ক্রিপ্ট ইন্টিগ্রেশন ডেটাবেস ইনিশিয়ালাইজেশন, টেবিল তৈরি, এবং ডেটা ইনসার্ট করার জন্য অত্যন্ত কার্যকর। এটি সাধারণত ডেটাবেস স্কিমা সেটআপ এবং ডিফল্ট ডেটা লোড করার জন্য ব্যবহৃত হয়। Spring ফ্রেমওয়ার্ক সরাসরি SQL ফাইলগুলো থেকে এই কাজটি করতে পারে।
JdbcTemplate
বা ResourceDatabasePopulator
ব্যবহার করে SQL স্ক্রিপ্ট চালানোএকটি .sql
ফাইল তৈরি করুন এবং এতে আপনার প্রয়োজনীয় SQL স্টেটমেন্ট যুক্ত করুন।
schema.sql:
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50)
);
CREATE TABLE departments (
id INT PRIMARY KEY,
name VARCHAR(50)
);
INSERT INTO departments (id, name) VALUES (1, 'IT');
INSERT INTO departments (id, name) VALUES (2, 'HR');
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
import javax.sql.DataSource;
@Configuration
public class AppConfig {
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUsername("root");
dataSource.setPassword("password");
return dataSource;
}
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean
public void initializeDatabase(DataSource dataSource) {
ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator();
databasePopulator.addScript(new ClassPathResource("schema.sql"));
databasePopulator.execute(dataSource);
}
}
JdbcTemplate
ব্যবহার করে সরাসরি SQL স্ক্রিপ্ট থেকে কোয়েরি চালানো যায়।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
@Service
public class SQLScriptService {
@Autowired
private JdbcTemplate jdbcTemplate;
public void runScript() {
String sql = "CREATE TABLE employees (id INT PRIMARY KEY, name VARCHAR(50), department VARCHAR(50));";
jdbcTemplate.execute(sql);
}
}
Spring Boot সরাসরি schema.sql
এবং data.sql
ফাইলগুলো থেকে ডাটাবেস ইনিশিয়ালাইজ করতে পারে।
src/main/resources
ফোল্ডারে schema.sql
এবং data.sql
ফাইল তৈরি করুন।schema.sql:
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50)
);
data.sql:
INSERT INTO employees (id, name, department) VALUES (1, 'John Doe', 'IT');
INSERT INTO employees (id, name, department) VALUES (2, 'Jane Smith', 'HR');
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.initialization-mode=always
আপনার ডেটাবেসে ডেটা সঠিকভাবে লোড হয়েছে কি না তা যাচাই করতে একটি সিম্পল কোড লিখতে পারেন।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
@Service
public class EmployeeService {
@Autowired
private JdbcTemplate jdbcTemplate;
public void fetchEmployees() {
String query = "SELECT * FROM employees";
jdbcTemplate.query(query, (rs, rowNum) -> {
System.out.println("ID: " + rs.getInt("id"));
System.out.println("Name: " + rs.getString("name"));
System.out.println("Department: " + rs.getString("department"));
return null;
});
}
}
schema.sql
এবং data.sql
-এর মাধ্যমে অটোমেটেড ইনিশিয়ালাইজেশন।Spring JDBC দিয়ে SQL স্ক্রিপ্ট ইন্টিগ্রেশন ডেটাবেস ইন্টিগ্রেশন এবং ইনিশিয়ালাইজেশনের জন্য একটি কার্যকর পদ্ধতি। Spring Boot এর ক্ষেত্রে এটি আরও সহজ, কারণ Spring নিজে থেকেই স্ক্রিপ্টগুলো হ্যান্ডেল করে।
Read more